package middleware

import (
	"github.com/gin-gonic/gin"
	"svs/model/result"
	"svs/util"
)

// 登录鉴权
func JwtAuth() gin.HandlerFunc {
	return func(c *gin.Context) {

		token := c.Request.Header.Get("token")
		if token == "" {
			result.Unauthorization(c)
			c.Abort()
			return
		}
		j := util.NewJwt()
		//解析token，将包含的用户信息解析出来，方便后续使用
		claims, err := j.ParseToken(token)
		if err != nil {
			if err == util.TokenExpired {
				result.Unauthorization(c) //授权已过期
				c.Abort()
				return
			}
			result.FailedWithMessage(err.Error(), c)
			c.Abort()
			return
		}
		//在缓存里的才能访问
		//cacheToken, _ := global.CACHE.Get(token)
		//if cacheToken == nil {
		//	result.Unauthorization(c)
		//	c.Abort()
		//	return
		//}
		c.Set("claims", claims)
		c.Next()
	}
}
